package com.roads.plan.service;

import com.roads.plan.domain.PlanProfileOverallDetail;
import com.roads.plan.domain.PlanProfileOverallMaster;
import com.roads.workflow.domain.WorkflowTaskDelivery;

import java.util.List;

/**
 * 总体形象计划Service接口
 *
 * @author nhp
 * @date 2024-01-31
 */
public interface IPlanProfileOverallService {

    /**
     * 根据主键ID查询主表详情
     *
     * @param id 总体形象计划主表主键
     * @return 总体形象计划
     */
    PlanProfileOverallMaster getMasterById(Integer id);

    /**
     * 根据主键ID查询明细详情
     *
     * @param id 总体形象计划明细主键
     * @return 总体形象计划
     */
    PlanProfileOverallDetail getDetailById(Integer id);

    /**
     * 查询列表
     *
     * @param model 总体形象计划主表
     * @return 总体形象计划集合
     */
    List<PlanProfileOverallMaster> selectMasterList(PlanProfileOverallMaster model);

    /**
     * 查询详细列表
     *
     * @param model 总体形象计划明细
     * @return 总体形象计划明细集合
     */
    List<PlanProfileOverallDetail> selectDetailList(PlanProfileOverallDetail model);

    /**
     * 校验总体形象计划是否唯一
     *
     * @param model 总体形象计划
     * @return 结果
     */
    String checkUnique(PlanProfileOverallMaster model);

    /**
     * 批量锁定
     *
     * @param ids 主键集合
     * @return 结果
     */
    int lock(Integer[] ids);

    /**
     * 解锁
     *
     * @param master 主表
     * @param id 主键
     * @return 结果
     */
    int unlock(PlanProfileOverallMaster master, Integer id);

    /**
     * 新增
     *
     * @param model 总体形象计划
     * @return 结果
     */
    int insert(PlanProfileOverallMaster model);

    /**
     * 批量删除
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteByIds(Integer[] ids);

    /**
     * 修改明细
     *
     * @param model 总体形象计划明细
     * @return 结果
     */
    int updateDetail(PlanProfileOverallDetail model);

    /**
     * 传送
     *
     * @param delivery 传送对象
     * @return 结果
     */
    int delivery(WorkflowTaskDelivery delivery);

}
